// 1.引入axios
import axios from 'axios'
// 内置包
import qs from 'qs'
// 2.写入配置文件  baseURL timeout  下面直接固定IP地址发请求  实际开发线上动态自动获取当前域名
axios.defaults.baseURL = 'http://127.0.0.1:5000'
// axios.defaults.baseURL = 'http://172.16.30.44:5000';
// http://172.16.30.44/#/login
// 一旦请求超过 多少秒 超时 没有发出请求就会停止报错
axios.defaults.timeout = 10000

// 3.拦截器
// 请求拦截
// 客服端 向 服务器 发送请求 每一次请求都会被拦截器拦截 进行一些自定义操作后 再发送服务器
/* axios.interceptors.request.use(config => {
  //进行操作 没有的话直接 返回config
  // 获取token
  const token = local.getItem('token')
  // 如果有token 请求中携带
  if (token) {
    config.headers.Authorization = token
  }
  return config
})

 */
// 请求拦截
// 服务器 向 客户端 返回数据 每一次返回都会被拦截器拦截 进行一些自定义操作后 再发送
axios.interceptors.response.use(res => {
  // 进行操作 没有的话直接 返回res res是返回的数据
  // res.data是简化返回的数据  简化后续操作.data
  return res.data
})

// 处理get post 方法  导出
export default {
  // 集中管理成功和失败的内容 不管理的话每个页面需要单独重复去写  用promise来进行管理
  get (url, params) {
    return new Promise((resolve, reject) => {
      // 发送get请求
      axios.get(url, { params })
        // 成功时
        .then(res => {
          resolve(res)
        })
        // 失败时
        .catch(err => {
          console.log(err)
        })
    })
  },

  // 注意 post请求 接收参数 只能是 key=value&key=value 类型数据格式
  post (url, query) {
    return new Promise((resolve, reject) => {
      // 发送post请求
      axios.post(url, qs.stringify(query)) //  qs.stringify()方法将数据自动解析为post需要的数据格式
        // 成功时
        .then(res => {
          resolve(res)
        })
        // 失败时
        .catch(err => {
          console.log(err)
        })
    })
  }
}
